
***************************************************************************************************************************					
											76.5种常用排序概述和快速排序详细讲解	2012.4.2
											77.再次讨论什么是数据结构				2012.4.2
											78.再次讨论到底什么是泛型				2012.4.2
***************************************************************************************************************************
#include "stdio.h"

//************************************************************
//				函数声明
//************************************************************
void	fastsort(int *,int,int);										//快速排序;
int		findpos(int *,int,int);											//查找第一个元素插入的位置

//************************************************************
//				程序入口
//************************************************************
void main()
{
	int a[6]={2,1,0,5,4,3};
	fastsort(a,0,5);
	for (int i=0;i<6;i++)
	{
		printf("%d ",a[i]);
	}
	return;
}

//************************************************************
//				函数实现
//************************************************************
	//---------快速排序----------
void	fastsort(int *arr,int low,int high)
{
	if (low < high )
	{
		int pos=findpos(arr,low,high);
		fastsort(arr,low,pos-1);
		fastsort(arr,pos+1,high);
	}
	
	return;
}

	//--------查找位置-----------
int		findpos(int *a,int l,int h)
{
	int tmp=a[l];

	while (l < h)
	{
		while (l < h && a[h] >= tmp)
		{
			h--;
		}
		a[l]=a[h];
		while(l < h && a[l] <= tmp)
		{
			l++;
		}
		a[h]=a[l];
	}
	a[l]=tmp;
	return l;
}
